var e = require;
var t = module;
var o = exports;
var n = o;
Object.defineProperty(n, "__esModule", {value: !0});
var i = e("CCNodePool"),
    a = e("SelfPool"),
    r = (function () {
        function e() {
            (this.pools = {}), (this.nameMap = {});
        }
        return (
            (e.instance = function () {
                return this.ins || (this.ins = new e()), this.ins;
            }),
            (e.prototype.init = function (e, t, o) {
                this.pools[e] || (this.pools[e] = new a.default(new i.default(e, t, o)));
            }),
            (e.prototype.initNode = function (e, t, o) {
                if (!this.pools[e]) {
                    var n = new i.default(e, null, o);
                    (this.pools[e] = new a.default(n)), n.setNodeRes(t);
                }
            }),
            (e.prototype.getPool = function (e) {
                return this.pools[e].getPool();
            }),
            (e.prototype.get = function (e) {
                if (this.pools[e]) {
                    var t = this.pools[e].get();
                    return this.nameMap[t.name] || t.name == e || (this.nameMap[t.name] = e), t;
                }
                return null;
            }),
            (e.prototype.put = function (e, t) {
                void 0 === t && (t = !1);
                var o = this.nameMap[e.name];
                o || (o = e.name),
                    o &&
                        (this.pools[o]
                            ? this.pools[o].put(e, t)
                            : cc.warn(" not have  name ", o, " ,go.name ", e.name));
            }),
            (e.prototype.clear = function (e) {
                this.pools[e] && (this.pools[e].clear(), (this.pools[e] = null));
            }),
            (e.prototype.clealAll = function () {
                for (var e in this.pools) this.clear(e);
                this.pools = {};
            }),
            e
        );
    })();
n.default = r;
